<?php
date_default_timezone_set('Africa/Cairo');
// 本站点配置好的， 热门的比赛
// https://www.egyball.com/api/v2/data/football/hot/recent?beginTime=1750215365&endTime=1750315365&openID=sp0002&sign=5b615103a0303823cf255b24057209db

// 本站全部的比赛
// https://www.egyball.com/api/v2/data/football/all/recent?beginTime=1750215365&endTime=1750315365&openID=sp0002&sign=5b615103a0303823cf255b24057209db


// 需要使用hmac-MD5签名：
// openID = sp0002
// hmac-MD5=key =  U@$77p#9

// 签名串例子：
// beginTime=1750215365&endTime=1750315365&openID=sp0002

// 以上待签名的字符串， 经 hmac-MD5，转hex， 得到 5b615103a0303823cf255b24057209db， 这个值用 sign字段传参过来

// beginTime和endTime 为utf time，， 根据你这边实际情况，比如时区，转成需要的 时间段。
// 数据返回是全量返回，所以系统暂时设定，endTime - beginTime 必须小于7天
// 另外  beginTime不能为 0

// 具体返回参考json例子，使用做好的例子，请求得到

// 这个接口， 必须用后台程序，  按最少1分轮询，然后存进自己的redis(后请求的数据覆盖之前的)， 等数据量起来后， 需要你这边提供 ip，我这边设置ip白名单
// 千万不要在 页面上 直接取数据， 这边有跨域和后续 web防火墙盗链处理

function sendHttpRequest($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);   // 关键：跟随 301/302
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);  
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        echo "Curl error: " . curl_error($ch);
    }
    curl_close($ch);
    return $response;
}

function getJson(string $jsonpath) {
    $beginTime = strtotime(date("Y-m-d"));
    $endTime = $beginTime + 6 * 86400;
    $signString = "beginTime=$beginTime&endTime=$endTime&openID=sp0002";
    $sign = hash_hmac('md5', $signString, 'U@$77p#9');

    $stateDes = [
        0 => '比赛异常',
        1 => '未开赛',
        2 => '上半场',
        3 => '中场',
        4 => '下半场',
        5 => '加时赛',
        7 => '点球决战',
        8 => '完场',
        9 => '推迟',
        10 => '终端',
        11 => '腰斩',
        12 => '取消',
    ];

    $stateDes = [
        0 => 'المباراة غير طبيعية',
        1 => 'ماتش لسه مبتدأش',
        2 => 'الشوط الأول',
        3 => 'وسط الملعب',
        4 => 'الشوط التاني',
        5 => 'وقت إضافي',
        7 => 'ركلات الترجيح',
        8 => 'انتهت المباراة',
        9 => 'تأجيل',
        10 => 'انقطاع',
        11 => 'قص النص',
        12 => 'إلغاء',
    ];
    $apiUrl = "https://www.egyball.com/api/v2/data/football/hot/recent?{$signString}&sign={$sign}";
    $rs = sendHttpRequest($apiUrl);
    //file_put_contents('/www/wwwroot/football/test.log', $rs.''.$apiUrl);
    $jsonRs  = json_decode($rs,true);
    $matchs = $playing = [];       
    foreach($jsonRs['data']['list'] as $item){
        $statusId = intval($item['statusID']);
        $temp = [
            'teamA' => $item['home']['Name'],
            'teamALogo' => $item['home']['Logo'],
            'teamAScore' => intval(json_decode($item['home']['Scores'],true)[0] ?? 0),

            'teamB' => $item['away']['Name'],
            'teamBLogo' => $item['away']['Logo'],
            'teamBScore' => intval(json_decode($item['away']['Scores'],true)[0] ?? 0),

            'id' => $item['id'],
            'status' => $stateDes[intval($item['statusID'])] ?? $stateDes[0], 
            'time' => date("m-d H:i:s",intval($item['matchTime']) + 3600)
        ];     
        //正在比赛
        if($statusId >=2 && $statusId <= 7){
            $playing[] = $temp;
        }else{
           if($statusId == 1)  $matchs[] = $temp;
        }
    }
    $rs = array_merge($playing,array_slice($matchs,0,10 ));
    if($rs) file_put_contents($jsonpath,json_encode(array_slice($rs,0,10)));
    
    file_put_contents("/jaychou/wps/football.json",json_encode(array_merge($playing,array_slice($matchs,0,30))));
}

if (php_sapi_name() === 'cli') {
    getJson("/jaychou/wps/data.json");
}

